Asynchronous mirroring is a popular way of duplicating data storage, for example, for the purpose of disaster recovery. Synchronous mirroring requires that data be stored by both a source and a target data storage before the storage transaction is considered complete. Asynchronous mirroring requires that the data first is stored by the source data storage, and that it will ultimately be stored at the target data storage, and that safeguards are in place to insure that the data can be tracked. Asynchronous mirroring allows the host or immediate source of the data to consider the storage transaction complete when the data is first stored by the source data storage. The asynchronous mirroring system then ultimately stores the data at the target data storage. As the result, implementation of asynchronous mirroring is much more complex than synchronous mirroring.
It is advantageous for disaster recovery to have the duplicated data storage at a site or location remote from that of the source data storage. The time required for distant verified communication of the data may be considerable, especially if large numbers of blocks or files (called “grains”) are to be mirrored. As the result, asynchronous mirroring is preferable from a time standpoint as compared to synchronous mirroring which requires actual storage by both a source and a target data storage before each storage transaction is considered complete.